package org.example.springbootweb01.controller;

import org.example.springbootweb01.pojo.User;
import org.example.springbootweb01.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
public class UserController {

    // @Autowired 进行依赖注入，常见的方式，有如下三种
    // 1.属性注入
    @Qualifier("userServiceImpl") // 指定当前要注入的bean对象。 在@Qualifier的value属性中，指定注入的bean的名称。 @Qualifier注解不能单独使用，必须配合@Autowired使用。
//    @Resource(name = "userServiceImpl") // @Resource注解，也是进行依赖注入，但是@Resource注解默认按照byName的方式注入。
    @Autowired
    private UserService userService;

    // 2.构造器（构造函数注入）
    // @Autowired
    // private UserService userService;
    // public UserController(UserService userService) {
    //     this.userService = userService;
    // }

    // 3.setter方法注入
//    @Autowired
//    private UserService userService;
//    public void setUserService(UserService userService) {
//        this.userService = userService;
//    }


    @RequestMapping("/list")
    public List<User> list() throws Exception {
        // 解析数据，封装成对象 ---> 集合
        return userService.findAll();
    }
}
